shell [ ] 命令

shell脚本程序中,大家会经常看到类似下面这样的判断语句:

if [ 条件判断 ]

左中括号 [ 是一个在shell内部实现的内建命令(builtin),其等价于test命令,如上一节教程中编写的脚本程序:

if test -x demo.sh
then
    echo "demo.sh has +x permits"
    ./demo.sh
else
    chmod +x demo.sh
    echo "add +x demo.sh success"
    ./demo.sh
fi

将其中的test命令,使用[]代替,脚本的运行结果是一样的:

if [ -x demo.sh ]
then
    echo "demo.sh has +x permits"
    ./demo.sh
else
    chmod +x demo.sh
    echo "add +x demo.sh success"
    ./demo.sh
fi

早期的bash版本中,将test命令替换为左中括号 [ 即可,不需要右中括号 ] 包起来,程序即可运行。现在新版的Bash语法,必须要使用一对中括号 [] 将条件判断表达式包起来,脚本才能运行。test命令、[ 命令、[]命令三者是等价的,可以通用。

[]命令的参数可以参考上一节教程中的test命令参数,两者是可以共用的。使用[]命令时还需要注意的一个地方是:中括号里的条件判断表达式,和中括号之间要有空格,左中括号和if之间也要有空格。

《Linux三剑客》视频教程:Linux下开发工具vim、Git、Makefile、autotools、qemu、debug精讲,从零开始一步一步写项目的Makefile,提供企业级Makefile模板,Git操作实战,vim从新手到高手,一步一步打造类似Source Insight的IDE!详情点击:王利涛老师个人淘宝店:Linux三剑客